package part3;

/**
 * @author wcj
 * @Date 2021/5/11 16:10
 * @Version 1.0
 */
public class Part310 {
    public static void main(String[] args) {
        // 原码，反码，补码
        // 正数的原码，反码，补码形式都是相同的；符数的反码等于原码符号位不变，其它位取反，补码等于反码末尾+1
        // 计算机中都是按照补码形式进行存储的，因为数值计算方便，无需考虑符号位，正负数都是一样计算
        int x = 8;
        // 4 右移一位相当于缩小一倍
        System.out.println("有符号右移一位:"+(x>>1));
        // 16 左移一位相当于扩大一倍
        System.out.println("有符号左移一位:"+(x<<1));
        // 4 因为符号位就在左边，所以没有无符号左移，无符号右移是无论正负都在高位加0
        System.out.println("无符号右移一位:"+(x>>>1));

        int y = -8;
        System.out.println("无符号右移:"+(y>>>1));
    }
}
